package com.yzh.zhipu.model;

import com.yzh.zhipu.model.args.Choices;
import com.yzh.zhipu.model.args.Usage;
import lombok.Data;

import java.util.List;

@Data
public class ChatResponse {
    //------------------- v3 版本 start -------------------
    private String data;
    private String meta;
    //------------------- v3 版本 end   -------------------

    //------------------- v4 版本 start -------------------
    private String id;              //任务ID
    private Long created;           //请求创建时间，是以秒为单位的 Unix 时间戳
    private String model;           //模型名称
    private List<Choices> choices;  //当前对话的模型输出内容
    private Usage usage;            //结束时返回本次模型调用的 tokens 数量统计
    //------------------- v4 版本 end   -------------------

    /**
     * 任务编号、任务单号、响应状态信息
     * SSE调用方式是使用Meta封装
     */
    @Data
    public static class Meta {
        private String task_status;
        private Usage usage;
        private String task_id;
        private String request_id;
    }

    /**
     * 获取结果使用该方法，因为v3和v4版本的出参不同，所以做统一出参
     * @return
     */
    public String getResult(ChatResponse chatResponse) {
        //v3版本响应参数没有model，所以model为null就按照v3格式响应
        return model == null ? chatResponse.getData() : (String) chatResponse.getChoices().get(0).getDelta().getContent();
    }


}
